package java_oop.demo07;

/**
 * @author IT_Jay
 * @date 2022/1/25 20:55
 */

public class Student extends Person{
    public void go(){
        System.out.println("go");
    }
}


/**
 *     public static void main(String[] args) {
 *         //Object >> Person  >> Student
 *         //Object >> Person  >> Teacher
 *         //Object >> String
 *
 * //        System.out.println(X instanceof Y);       //能否编译取决于X、Y是否有父子关系
 *
 *         Object object = new Student();
 *         System.out.println(object instanceof Student);      //true
 *         System.out.println(object instanceof Person);       //true
 *         System.out.println(object instanceof Object);       //true
 *         System.out.println(object instanceof Teacher);      //false
 *         System.out.println(object instanceof String);       //false
 *
 *         System.out.println("==============================================");
 *
 *         Person person = new Student();
 *         System.out.println(person instanceof Student);      //true
 *         System.out.println(person instanceof Person);       //true
 *         System.out.println(person instanceof Object);       //true
 *         System.out.println(person instanceof Teacher);      //false
 * //        System.out.println(person instanceof String);       //false   编译错误
 *
 *         System.out.println("==============================================");
 *
 *         Student student = new Student();
 *         System.out.println(student instanceof Student);      //true
 *         System.out.println(student instanceof Person);       //true
 *         System.out.println(student instanceof Object);       //true
 * //        System.out.println(student instanceof Teacher);      //false      编译错误
 *     }
 *
 */

/**
 * public static void main(String[] args) {
 *         //类型之间的转换： 父类  子类
 *         //高                 低
 *         Person student =new Student();
 *
 *         //将student（此时为Person类型）这个对象转换为Student类型，我们就可以直接使用Student类的方法
 * //        Student s = (Student)student;
 * //        s.go();
 *
 *         ((Student)student).go();        //两句合为一句
 *
 *         //子类转父类，可能丢失自己本来的方法
 *         Student student1 = new Student();
 *         student1.go();
 *         Person person = student;
 *     }
 *
 *
 *
 * /*
 * 1、父类引用指向子类的对象
 * 2、把子类转换为父类，向上转型
 * 3、八父类转换为子类，向下转型，强制转换
 * 4、方便方法的调用，减少代码的重复
 *
 * 封装、继承、多态。           抽象类、接口类
 *  */
